widget: Warn when allocation for gtk_widget_size_allocate() is too small
authorBenjamin Otte <otte@redhat.com>
Thu, 28 Apr 2011 03:12:00 +0000 (05:12 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 28 Apr 2011 03:13:30 +0000 (05:13 +0200)
Widgets may not be underallocated, it is the responsibility of the
caller to ensure this never happens.

gtk/gtkwidget.c

index 073120282a49ce400822e069e50613da99b7528f..f45d4904119a8aee2e3d7b9ef6688c7ad103f13f 100644 (file)
@@ -4804,7 +4804,7 @@ gtk_widget_size_allocate (GtkWidget       *widget,
        * when aligning implicitly.
        */
       gtk_widget_get_preferred_width (widget, &min_width, &natural_width);
-      gtk_widget_get_preferred_height_for_width (widget, real_allocation.width, &dummy, &natural_height);
+      gtk_widget_get_preferred_height_for_width (widget, real_allocation.width, &min_height, &natural_height);
     }
   else
     {
@@ -4813,9 +4813,15 @@ gtk_widget_size_allocate (GtkWidget      *widget,
        * when aligning implicitly.
        */
       gtk_widget_get_preferred_height (widget, &min_height, &natural_height);
-      gtk_widget_get_preferred_width_for_height (widget, real_allocation.height, &dummy, &natural_width);
+      gtk_widget_get_preferred_width_for_height (widget, real_allocation.height, &min_width, &natural_width);
     }
 
+  if (min_width > real_allocation.width || min_height > real_allocation.height)
+    g_warning ("gtk_widget_size_allocate(): attempt to underallocate %s %p. "
+               "Allocation is %dx%d, but minimum required size is %dx%d.",
+               G_OBJECT_TYPE_NAME (widget), widget,
+               real_allocation.width, real_allocation.height,
+               min_width, min_height);
   /* Now that we have the right natural height and width, go ahead and remove any margins from the
    * allocated sizes and possibly limit them to the natural sizes */
   GTK_WIDGET_GET_CLASS (widget)->adjust_size_allocation (widget,